﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Servico;
using System.Security.Cryptography;
using System.Text;

public partial class RegistarCliente : System.Web.UI.Page
{
    Service1 servico = new Service1();

    protected void Page_Load(object sender, EventArgs e)
    {
        // Só acede a esta pagina se estiver autenticado e se for um funcionario de Nivel 6 (Funcionario de CallCenter)
        if (Session["Email"] != null)
        {
        }
        else
        {
            Session["Erro"] = "Por favor autentique-se!";
            Response.Redirect("Home.aspx");
        }

        MensagemErro();
    }

    protected void Registar_Click(object sender, EventArgs e)
    {// TODO Nao esta a registar bem por causa do tele
        //if (servico.registarCliente(tbEReg.Text, getMd5Hash(tbPReg.Text), tbPN.Text, tbUN.Text, tbT.Text, tbEnd.Text, tbC.Text, tbD.Text, tbCP.Text))
        // TODO descomentar quando puder testar MD5
        //Response.Write(tbEReg.Text+"|" + tbPReg.Text+"|" + tbPN.Text+"|" + tbUN.Text+"|" + tbT.Text+"|" + tbEnd.Text+"|" + tbC.Text+"|" + tbD.Text+"|"+tbCP.Text);
        //String tel = "";
        //Dim con;
        //if (tbT.Text.Length!=0) { tel = tbT.Text.ToString(); }

        if (servico.validarEmailCliente(tbEReg.Text) && servico.validarEmailFuncionario(tbEReg.Text))
        {
            if (servico.registarCliente(tbEReg.Text, getMd5Hash(tbPReg.Text), tbPN.Text, tbUN.Text, tbT.Text, tbEnd.Text, tbC.Text, tbD.Text, tbCP.Text))
            {
                Session["Sucesso"] = "Registo com sucesso!";
                //Response.Redirect("Home.aspx");
            }
            else
            {
                Session["Erro"] = "O registo não foi possível!";
            }
        }
        else
        {
            Session["Erro"] = "O email já existe!";
        }
        
        //}
        MensagemErro();
    }

    // Hash an input string and return the hash as
    // a 32 character hexadecimal string.
    public string getMd5Hash(string input)
    {
        // Create a new instance of the MD5CryptoServiceProvider object.
        MD5 md5Hasher = MD5.Create();

        // Convert the input string to a byte array and compute the hash.
        byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));

        // Create a new Stringbuilder to collect the bytes
        // and create a string.
        StringBuilder sBuilder = new StringBuilder();

        // Loop through each byte of the hashed data 
        // and format each one as a hexadecimal string.
        for (int i = 0; i < data.Length; i++)
        {
            sBuilder.Append(data[i].ToString("x2"));
        }

        // Return the hexadecimal string.
        return sBuilder.ToString();
    }

    protected void MensagemErro()
    {
        if (Session["Erro"] != null)
        {
            Literal lit = new Literal();
            lit.Text = "<ul id=\"menu2\"><li>" + Session["Erro"].ToString() + "</li></ul>";
            PanelMsg.Controls.Add(lit);
            Session["Erro"] = null;
        }
        if (Session["Sucesso"] != null)
        {
            Literal lit = new Literal();
            lit.Text = "<ul id=\"menu3\"><li>" + Session["Sucesso"].ToString() + "</li></ul>";
            PanelMsg.Controls.Add(lit);
            Session["Sucesso"] = null;
        }
    }
}